
#pragma once
#include<graphics.h>
#include<easyx.h>
#include"BasicClass.h"
// 地图尺寸
const int MAP_SIZE = 4;
const int CELL_SIZE = 100;  // 每个单元格的像素大小
const int WINDOW_WIDTH = MAP_SIZE * CELL_SIZE;  // 窗口宽度
const int WINDOW_HEIGHT = MAP_SIZE * CELL_SIZE;  // 窗口高度

class elem
{
public:
    int id;
    /*后面加东西可以加到这里*/
    elem(int num) :id(num) {}

};


class enu//写成类纯属为了好初始化，这就是一个结构体
{
public:
    int pass_flag;
    IMAGE& im;

    enu(int f, IMAGE& i) : pass_flag(f), im(i) {}
};


enum key
{
    w,
    a,
    s,
    d,
    /*......可以加*/
    none_input = 114514
};
//// 按键状态管理类
//class ButtonState {
//private:
//    bool isPressed;     // 当前是否被按下
//    bool wasPressed;    // 上一帧是否被按下
//
//public:
//    ButtonState() : isPressed(false), wasPressed(false) {}
//
//    // 更新按键状态并返回是否触发有效按下
//    bool update(bool currentState) {
//        wasPressed = isPressed;
//        isPressed = currentState;
//
//        // 只有当上一帧未按下，且当前帧按下时，才返回true
//        return (!wasPressed && isPressed);
//    }
//
//    // 判断按键是否被按下(当前状态)
//    bool getState() const {
//        return isPressed;
//    }
//};

extern IMAGE tr;     // 草
extern IMAGE tr2;    // 墙
extern IMAGE it1;
extern IMAGE it2;
extern IMAGE M;

extern enu world[MAP_SIZE][MAP_SIZE];

void init_world();
void show_world();
void uimg(int x, int y, IMAGE& z);
void show_player(Player, key);
key task_estimate();
void interact(key, Player&);
void torch(int, Player, position); 
Bulbasaur Bu(1);
Battle battle;
Charmander Ch(1);
